import axios from 'axios'
import { useAuthStore } from '@/stores/auth'

// 创建 axios 实例
const apiClient = axios.create({
  baseURL: (import.meta.env.VITE_API_BASE_URL ? import.meta.env.VITE_API_BASE_URL.replace(/\/$/, '') : 'http://127.0.0.1:8000') + '/api',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})

// 请求拦截器
apiClient.interceptors.request.use(config => {
  const authStore = useAuthStore()
  if (authStore.token) {
    config.headers = config.headers || {}
    config.headers.Authorization = `Bearer ${authStore.token}`
  }
  return config
}, error => {
  return Promise.reject(error)
})

// 响应拦截器
apiClient.interceptors.response.use(response => {
  // 直接返回响应数据
  return response.data
}, error => {
  const response = error.response
  
  // 统一错误处理
  if (response) {
    const errorMessage = getErrorMessage(response.status, response.data?.message)
    console.error(errorMessage)
    
    // 401 未授权处理
    if (response.status === 401) {
      const authStore = useAuthStore()
      authStore.clearToken()
      // 可以在这里添加路由跳转到登录页的逻辑
      // router.push('/login')
    }
  } else {
    console.error('网络错误，请检查网络连接')
  }
  
  return Promise.reject(error)
})

// 错误消息映射
function getErrorMessage(status, defaultMessage) {
  const messages = {
    400: '请求参数错误',
    401: '认证失败，请重新登录',
    403: '没有权限访问该资源',
    404: '请求资源不存在',
    500: '服务器内部错误',
    502: '网关错误',
    503: '服务不可用',
    504: '网关超时'
  }

  return messages[status] || defaultMessage || `请求错误: ${status}`
}

export default apiClient